জেমিটার (JMeter) একটি শক্তিশালী টুল যা ওয়েব অ্যাপ্লিকেশন, সার্ভিস, এবং অন্যান্য প্রটোকলের জন্য লোড, পারফরম্যান্স, এবং স্ট্রেস টেস্টিং পরিচালনা করতে ব্যবহৃত হয়। Logic Controllers জেমিটারের একটি গুরুত্বপূর্ণ উপাদান, যা টেস্ট কেসের মধ্যে লজিকাল প্রবাহ (logical flow) এবং রিকোয়েস্ট এক্সিকিউশন কন্ট্রোল করে। Logic Controllers আপনাকে টেস্টের মধ্যে বিভিন্ন ধরনের শর্ত এবং লজিক ব্যবহার করার সুযোগ দেয়, যেমন কন্ডিশনাল রিকোয়েস্ট বা র্যান্ডম রিকোয়েস্ট সিলেকশন।
এই গাইডে, আমরা জেমিটারের Logic Controllers সম্পর্কে বিস্তারিত জানব এবং কীভাবে এগুলি টেস্ট প্ল্যানের মধ্যে ব্যবহার করা যায়।
Logic Controllers কি?
Logic Controllers জেমিটার টেস্ট প্ল্যানে নির্দিষ্ট শর্ত বা লজিকের মাধ্যমে বিভিন্ন রিকোয়েস্টের এক্সিকিউশন কন্ট্রোল করে। এগুলি রিকোয়েস্টের সিকোয়েন্স, শর্তাবলী, এবং অন্যান্য ফ্লো নির্ধারণ করতে সাহায্য করে। Logic Controllers বিভিন্ন ধরনের হতে পারে, যেমন:
- Loop Controller
- If Controller
- While Controller
- ForEach Controller
- Throughput Controller
- Random Controller
- Transaction Controller
1. Loop Controller
Loop Controller রিকোয়েস্টের পুনরাবৃত্তি নির্ধারণ করে। এটি একটি নির্দিষ্ট সংখ্যক বার বা শর্ত অনুসারে রিকোয়েস্ট চালাতে ব্যবহৃত হয়।
ব্যবহার:
- এটি সাধারণত একটি নির্দিষ্ট রিকোয়েস্টকে একাধিক বার রান করার জন্য ব্যবহৃত হয়।
- Loop Count এর মাধ্যমে আপনি কতবার রিকোয়েস্টটি পুনরাবৃত্তি হবে তা নির্ধারণ করতে পারেন।
উদাহরণ:
আপনি যদি একটি HTTP রিকোয়েস্টকে 5 বার এক্সিকিউট করতে চান, তাহলে Loop Count 5 সেট করুন।
কনফিগারেশন:
- Loop Count: 5
- রিকোয়েস্টের মধ্যকার ফ্লো 5 বার চলবে।
2. If Controller
If Controller ব্যবহার করে শর্তসাপেক্ষ (conditional) রিকোয়েস্ট চালানো যায়। এটি নির্দিষ্ট শর্ত পূরণের ভিত্তিতে একটি রিকোয়েস্ট রান করবে।
ব্যবহার:
- এটি শর্তসাপেক্ষ রিকোয়েস্ট চালানোর জন্য ব্যবহৃত হয়, যেমন যদি কোনো ভেরিয়েবল বা কন্ডিশন সঠিক হয়, তাহলে নির্দিষ্ট রিকোয়েস্টটি চালানো হবে।
উদাহরণ:
যদি আপনার ভেরিয়েবল $ResponseTime$ 1000 এর বেশি হয়, তবে একটি নির্দিষ্ট রিকোয়েস্ট চালানো হবে।
কনফিগারেশন:
- Condition:
${ResponseTime} > 1000
3. While Controller
While Controller একটি লুপ কন্ট্রোলার, যা একটি শর্ত পূরণ না হওয়া পর্যন্ত রিকোয়েস্ট চালিয়ে যেতে থাকে। এটি একধরণের ডাইনামিক লুপ যা শর্তের উপর নির্ভর করে।
ব্যবহার:
- এটি রিকোয়েস্ট চালানোর জন্য ব্যবহার করা হয় যতক্ষণ না শর্ত পূর্ণ হয়।
- শর্ত পূরণ হলে, লুপটি থামবে।
উদাহরণ:
আপনি যদি একটি রিকোয়েস্ট চালাতে চান যতক্ষণ না রেসপন্স টাইম 2000 মিঃসেকের কম হয়।
কনফিগারেশন:
- Condition:
${ResponseTime} < 2000
4. ForEach Controller
ForEach Controller ব্যবহার করে আপনি একটি লিস্ট বা একটি নির্দিষ্ট সেটের প্রতিটি আইটেমের জন্য রিকোয়েস্ট চালাতে পারেন। এটি সাধারণত ডাটা ড্রিভেন টেস্টিংয়ের জন্য ব্যবহৃত হয়।
ব্যবহার:
- এটি একটি ভেরিয়েবল বা লিস্টের প্রতিটি আইটেমকে সঠিকভাবে এক্সিকিউট করতে ব্যবহৃত হয়।
- ডাটাবেস থেকে ডাটা এক্সট্র্যাক্ট করতে বা লিস্টের সাথে কাজ করতে এটি কার্যকরী।
উদাহরণ:
আপনি যদি একটি CSV ফাইল থেকে ডাটা লোড করে সেটির প্রতিটি রেকর্ডের জন্য রিকোয়েস্ট পাঠাতে চান।
কনফিগারেশন:
- Input Variable Prefix:
data - Output Variable Prefix:
output - এটি CSV ডাটা ফাইল থেকে প্রতিটি আইটেমকে এক্সিকিউট করবে।
5. Throughput Controller
Throughput Controller রিকোয়েস্টের এক্সিকিউশন রেট কন্ট্রোল করে। এটি ব্যবহার করে আপনি রিকোয়েস্টের থ্রুপুট (throughput) নির্ধারণ করতে পারেন, যেমন প্রতি সেকেন্ডে কত রিকোয়েস্ট এক্সিকিউট হবে।
ব্যবহার:
- এটি মূলত রিকোয়েস্টের থ্রুপুট নিয়ন্ত্রণে ব্যবহৃত হয় এবং রিকোয়েস্টের হার (rate) বাড়ানো বা কমানোর জন্য সহায়ক।
উদাহরণ:
আপনি যদি প্রতি মিনিটে 10টি রিকোয়েস্ট রান করতে চান, তাহলে Throughput Controller ব্যবহার করতে পারেন।
কনফিগারেশন:
- Throughput: 10 requests per minute
6. Random Controller
Random Controller রিকোয়েস্টের এক্সিকিউশনকে এলোমেলোভাবে (random) কন্ট্রোল করে। এটি বিভিন্ন রিকোয়েস্টের সিকোয়েন্স এলোমেলো করতে সহায়তা করে।
ব্যবহার:
- এটি একটি এলোমেলো রিকোয়েস্ট সিকোয়েন্স তৈরি করতে ব্যবহৃত হয়, যেখানে প্রতিটি রিকোয়েস্টের এক্সিকিউশন র্যাণ্ডমভাবে হবে।
উদাহরণ:
এটি শুধুমাত্র এলোমেলো রিকোয়েস্ট সিকোয়েন্স তৈরি করবে।
কনফিগারেশন:
- Random Order: Yes (এটা রিকোয়েস্টের মধ্যে এলোমেলো অর্ডারে এক্সিকিউট হবে)
7. Transaction Controller
Transaction Controller সাধারণত আপনার টেস্টের সমস্ত রিকোয়েস্টের জন্য একটি ট্রানজেকশন (transaction) হিসাব করে। এটি টেস্টের সময়ে ওয়েবসাইট বা সার্ভিসের মোট সময় পরিমাপ করতে ব্যবহৃত হয়।
ব্যবহার:
- এটি একটি ব্লক হিসেবে কাজ করে যা টেস্টের পুরো সময় বা নির্দিষ্ট একাধিক রিকোয়েস্টের এক্সিকিউশন সময় পরিমাপ করতে সহায়তা করে।
উদাহরণ:
আপনি যদি কোনো পেজের লোড সময় পরিমাপ করতে চান, তবে Transaction Controller ব্যবহার করতে পারেন।
কনফিগারেশন:
- Include duration of timer: Yes
- Include duration of each sampler: Yes
সারাংশ
জেমিটার (JMeter) Logic Controllers ব্যবহার করে আপনি ওয়েব অ্যাপ্লিকেশন বা সার্ভিসের লজিকাল ফ্লো নিয়ন্ত্রণ করতে পারেন এবং আপনার টেস্টে কাস্টম শর্ত এবং কনফিগারেশন যোগ করতে পারেন। Logic Controllers, যেমন Loop Controller, If Controller, While Controller, ForEach Controller, Throughput Controller, Random Controller, এবং Transaction Controller, আপনাকে টেস্ট কেসগুলির মধ্যে ফ্লো কাস্টমাইজ করতে সাহায্য করে। এগুলি ব্যবহার করে আপনি আরো উন্নত এবং বাস্তবসম্মত টেস্ট পরিকল্পনা তৈরি করতে পারবেন, যা ওয়েব অ্যাপ্লিকেশন বা সার্ভিসের পারফরম্যান্স সঠিকভাবে মূল্যায়ন করতে সাহায্য করবে।
জেমিটার (JMeter) একটি শক্তিশালী ওপেন সোর্স টুল যা পারফরম্যান্স টেস্টিং, লোড টেস্টিং, এবং স্ট্রেস টেস্টিংয়ের জন্য ব্যবহৃত হয়। যখন বিভিন্ন ধরনের টেস্টের মধ্যে নির্দিষ্ট লজিক বা শর্তযুক্ত প্রবাহ (Flow) তৈরি করার প্রয়োজন হয়, তখন Logic Controller ব্যবহার করা হয়। এটি আপনাকে নির্দিষ্ট শর্ত বা কন্ডিশনের উপর ভিত্তি করে টেস্ট কেসের প্রবাহ নিয়ন্ত্রণ করতে সাহায্য করে।
Logic Controller কি?
Logic Controller হল জেমিটার এর একটি উপাদান যা আপনার টেস্ট প্ল্যানের মধ্যে রিকোয়েস্টের কার্যক্রম নিয়ন্ত্রণ এবং পরিচালনা করে। এটি টেস্টিং প্রবাহকে কাস্টমাইজ করার জন্য ব্যবহার হয়। Logic Controller এর মাধ্যমে আপনি টেস্টের মধ্যে লজিক্যাল প্রবাহ তৈরি করতে পারেন, যেমন রিকোয়েস্টের Reihenfolge (Order), কন্ডিশনাল এক্সিকিউশন, এবং র্যান্ডম রিকোয়েস্ট প্রক্রিয়া।
জেমিটার Logic Controller সাধারণত ব্যবহৃত হয় যখন আপনি কিছু নির্দিষ্ট শর্ত বা লজিক অনুসরণ করে একাধিক রিকোয়েস্ট প্রেরণ করতে চান। এটি সিমুলেটেড ইউজারদের জন্য টেস্ট কন্ডিশন তৈরি করতে সহায়ক।
Logic Controller এর বিভিন্ন ধরণ
জেমিটার বিভিন্ন ধরনের Logic Controller সরবরাহ করে, যেমন:
1. Simple Controller
এটি একটি বেসিক কন্ট্রোলার যা একে একে রিকোয়েস্ট পাঠানোর জন্য ব্যবহৃত হয়। এটি কোনো লজিক বা শর্ত ছাড়াই রিকোয়েস্ট পাঠায়।
2. Loop Controller
এই কন্ট্রোলার ব্যবহার করে আপনি নির্দিষ্ট সংখ্যক বার রিকোয়েস্ট পাঠাতে পারেন। এটি ইউজারের জন্য একটি নির্দিষ্ট লুপ চালাতে সক্ষম।
উদাহরণ:
ধরা যাক, আপনি ১০ বার একটি HTTP Request পাঠাতে চান, তাহলে Loop Controller সেট করা হবে যাতে সেই HTTP Requestটি ১০ বার চলতে থাকে।
3. If Controller
এই কন্ট্রোলার ব্যবহৃত হয় শর্ত অনুসারে রিকোয়েস্ট প্রেরণের জন্য। যদি নির্দিষ্ট শর্ত পূর্ণ হয়, তবে একটি নির্দিষ্ট রিকোয়েস্ট চালানো হবে।
উদাহরণ:
যদি কোনো পেজের স্ট্যাটাস কোড 200 হয়, তবে নির্দিষ্ট HTTP Request পাঠানো হবে।
4. While Controller
While Controller একটি শর্তের ভিত্তিতে কাজ করে। এই কন্ট্রোলার রিকোয়েস্ট চালাতে থাকে যতক্ষণ না নির্দিষ্ট শর্ত পূর্ণ হয়।
উদাহরণ:
যতক্ষণ না ইউজারের নির্দিষ্ট সংখ্যা পৌঁছায়, ততক্ষণ একটি HTTP Request পাঠানো হবে।
5. ForEach Controller
ForEach Controller ব্যবহার করে আপনি একাধিক ডাটা সেটের জন্য রিকোয়েস্ট চালাতে পারেন। এটি একটি লিস্ট বা অ্যারে থেকে ডাটা নিয়ে প্রতিটি ডাটার জন্য রিকোয়েস্ট প্রেরণ করে।
উদাহরণ:
আপনার কাছে যদি একাধিক ইউজার আইডি থাকে, তাহলে ForEach Controller ব্যবহার করে প্রতিটি ইউজার আইডি দিয়ে HTTP Request পাঠানো যাবে।
6. Random Controller
এই কন্ট্রোলার রিকোয়েস্টের জন্য এলোমেলোভাবে সিলেক্ট করতে ব্যবহৃত হয়। এটি আপনাকে নির্দিষ্ট রিকোয়েস্ট এলোমেলোভাবে চালানোর সুযোগ দেয়।
উদাহরণ:
একাধিক HTTP রিকোয়েস্ট থাকলে, Random Controller এলোমেলোভাবে তাদের পাঠাবে।
Logic Controller ব্যবহার করার পদ্ধতি
1. Logic Controller যোগ করা
- আপনার Test Plan অথবা Thread Group এর মধ্যে রাইট ক্লিক করুন।
- "Add" -> "Logic Controller" থেকে যে ধরনের কন্ট্রোলার আপনি ব্যবহার করতে চান তা সিলেক্ট করুন, যেমন Simple Controller, Loop Controller, If Controller, ইত্যাদি।
2. Logic Controller কনফিগার করা
- If Controller এর ক্ষেত্রে একটি শর্ত নির্ধারণ করতে পারেন। উদাহরণস্বরূপ, যদি আপনি চান যে একটি রিকোয়েস্ট তখনই এক্সিকিউট হোক যখন সার্ভার ২০০ স্ট্যাটাস কোড ফেরত দেয়, তবে
Ifকন্ডিশনে${statusCode} == 200শর্ত ব্যবহার করা যেতে পারে। - Loop Controller তে আপনি নির্দিষ্ট সংখ্যা (যেমন ১০ বার) সেট করতে পারেন, এবং প্রতিবার লুপের মধ্যে যে রিকোয়েস্ট আছে তা চলবে।
- While Controller তে শর্তের ভিত্তিতে লুপ চলতে থাকবে যতক্ষণ না শর্ত পূর্ণ হয়।
3. Test Plan এ Logic Controller যুক্ত করা
Logic Controller এর মাধ্যমে আপনি আপনার Test Plan বা Thread Group এর মধ্যে কীভাবে রিকোয়েস্টগুলি কার্যকর হবে তা নিয়ন্ত্রণ করতে পারেন।
উদাহরণ:
ধরা যাক, আপনি Loop Controller ব্যবহার করছেন এবং ৫ বার একটি HTTP Request চালাতে চান:
- Thread Group এ একটি Loop Controller যোগ করুন।
- Loop Controller এর মধ্যে একটি HTTP Request Sampler যোগ করুন।
- HTTP Request Sampler এ আপনার URL, Method, এবং অন্যান্য তথ্য প্রদান করুন।
- Loop Controller এর Loop Count সেট করুন ৫।
- যখন টেস্ট রান হবে, HTTP Request ৫ বার এক্সিকিউট হবে।
Logic Controller এর সুবিধা
- ডাইনামিক টেস্টিং: Logic Controller ব্যবহার করে আপনি টেস্টের মধ্যে ডাইনামিক বা শর্তভিত্তিক আচরণ তৈরি করতে পারেন।
- কমপ্লেক্স টেস্টিং: এটি আপনাকে বিভিন্ন পরিস্থিতিতে কমপ্লেক্স টেস্ট কনফিগারেশন করতে সাহায্য করে।
- ফ্লেক্সিবিলিটি: Logic Controller এর মাধ্যমে টেস্ট প্ল্যানকে আরও বেশি ফ্লেক্সিবল এবং কাস্টমাইজেবল করা যায়।
সারাংশ
জেমিটার (JMeter) এর Logic Controller একটি অত্যন্ত কার্যকরী টুল যা টেস্ট প্ল্যানের মধ্যে রিকোয়েস্টের প্রবাহ নিয়ন্ত্রণ করে। এটি বিভিন্ন শর্ত, লুপ, এলোমেলো রিকোয়েস্ট পাঠানো, এবং ডাইনামিক আচরণ সিমুলেট করার জন্য ব্যবহৃত হয়। বিভিন্ন ধরনের Logic Controller, যেমন Simple Controller, Loop Controller, If Controller, While Controller, ForEach Controller, এবং Random Controller, আপনাকে আপনার টেস্ট কেসের লজিক কাস্টমাইজ এবং পরিচালনা করতে সহায়তা করে।
জেমিটার (JMeter) বিভিন্ন টেস্টিং স্কেনারিও পরিচালনা করতে এবং টেস্ট প্ল্যানের কাঠামো তৈরি করতে বিভিন্ন ধরনের কন্ট্রোলার প্রদান করে। কন্ট্রোলারগুলি ব্যবহারকারীকে টেস্টের প্রবাহ এবং স্ক্রিপ্টে অন্তর্ভুক্ত কম্পোনেন্টের কার্যক্রম নিয়ন্ত্রণ করতে সাহায্য করে। Simple Controller, Loop Controller, এবং Module Controller হল কিছু সাধারণ কন্ট্রোলার যা টেস্ট স্ক্রিপ্টের বিভিন্ন অংশে নির্দিষ্ট কাজ করতে ব্যবহৃত হয়।
1. Simple Controller
Simple Controller হল জেমিটার কন্ট্রোলারগুলোর মধ্যে সবচেয়ে সাধারণ এবং সরল। এটি একটি কন্টেইনার হিসেবে কাজ করে যেখানে আপনি একাধিক স্যাম্পলার বা অন্যান্য কন্ট্রোলার অন্তর্ভুক্ত করতে পারেন। Simple Controller সাধারণত অন্যান্য কন্ট্রোলারের কার্যক্রম নিয়ন্ত্রণ বা টেস্ট প্ল্যানের কাঠামো তৈরিতে ব্যবহার করা হয়।
বৈশিষ্ট্য:
- এটি কোনো নির্দিষ্ট শর্ত বা লুপ প্রক্রিয়া সরবরাহ করে না।
- এটি কেবল স্যাম্পলারগুলিকে গ্রুপ করে এবং তাদের নির্দিষ্টভাবে কার্যকরী করে।
- অন্যান্য কন্ট্রোলারের মধ্যে একটি সাধারণ কাঠামো বা গ্রুপিং তৈরির জন্য ব্যবহৃত হয়।
উদাহরণ:
ধরা যাক, আপনি একটি HTTP রিকোয়েস্ট স্যাম্পলার এবং একটি জাভা স্যাম্পলার একটি গ্রুপে রাখতে চান, তাহলে আপনি এই দুইটি স্যাম্পলারকে একটি Simple Controller এর মধ্যে রাখবেন।
2. Loop Controller
Loop Controller একটি কন্ট্রোলার যা নির্দিষ্ট সংখ্যক বার টেস্ট স্ক্রিপ্ট বা স্যাম্পলারের কার্যক্রম পুনরাবৃত্তি করতে সাহায্য করে। এটি বিশেষভাবে ব্যবহার করা হয় যখন আপনি কোনও স্যাম্পলারের কার্যক্রম একাধিক বার চালাতে চান।
বৈশিষ্ট্য:
- এটি একটি নির্দিষ্ট সংখ্যক বার বা Loop Count এর মাধ্যমে স্যাম্পলার বা টেস্ট কার্যক্রম চালায়।
- Loop Controller এর সাহায্যে আপনি একটি নির্দিষ্ট অংশ একাধিক বার পুনরাবৃত্তি করতে পারেন, যা লোড টেস্টিং বা পারফরম্যান্স টেস্টিং করার জন্য খুবই উপকারী।
উদাহরণ:
ধরা যাক, আপনি চান যে একটি HTTP রিকোয়েস্ট ১০ বার সম্পন্ন হোক। তাহলে আপনি Loop Controller ব্যবহার করবেন এবং Loop Count কে ১০ দিয়ে সেট করবেন।
কনফিগারেশন:
- Loop Count: যতবার স্যাম্পলার বা কাজটি চলবে, সেটি নির্ধারণ করে। আপনি এটি নির্দিষ্ট সংখ্যা বা "forever" হিসাবে সেট করতে পারেন (যতক্ষণ না আপনি এটি বন্ধ না করেন)।
3. Module Controller
Module Controller একটি কন্ট্রোলার যা অন্য একটি টেস্ট প্ল্যান বা স্ক্রিপ্টে সংজ্ঞায়িত করা "Module" চালাতে সাহায্য করে। এটি মূলত একটি সাব-টেস্ট বা সাব-প্ল্যান হিসেবে কাজ করে এবং বড় টেস্ট প্ল্যানের মধ্যে ছোট ছোট টেস্ট প্ল্যান ব্যবহার করার সুযোগ দেয়।
বৈশিষ্ট্য:
- এটি মূল টেস্ট প্ল্যানের মধ্যে অন্য টেস্ট প্ল্যানের পুনঃব্যবহারযোগ্য অংশ বা মডিউল অন্তর্ভুক্ত করার জন্য ব্যবহৃত হয়।
- Module Controller অন্য টেস্ট স্ক্রিপ্ট বা টেস্ট প্ল্যানকে "call" করতে সক্ষম, যার মাধ্যমে আপনি একাধিক টেস্ট প্ল্যানের কাঠামো সিস্টেম্যাটিকভাবে তৈরি করতে পারেন।
উদাহরণ:
ধরা যাক, আপনি একটি স্ক্রিপ্ট তৈরি করেছেন যা একাধিক পেজে HTTP রিকোয়েস্ট পাঠায় এবং এটি কয়েকবার ব্যবহার করতে চান। এই ক্ষেত্রে আপনি মডিউল কন্ট্রোলার ব্যবহার করে সেই স্ক্রিপ্টটি বারবার কল করতে পারবেন, যেন প্রতিটি টেস্ট স্ক্রিপ্টে পুনরায় কোড লেখা না হয়।
সারাংশ
জেমিটার (JMeter) এর Simple Controller, Loop Controller, এবং Module Controller হল গুরুত্বপূর্ণ কন্ট্রোলার, যা টেস্ট স্ক্রিপ্টের কার্যক্রম নিয়ন্ত্রণ এবং টেস্ট প্ল্যানের কাঠামো নির্মাণ করতে সহায়ক।
- Simple Controller সাধারণভাবে স্যাম্পলার বা অন্যান্য কন্ট্রোলারগুলো গ্রুপ করার জন্য ব্যবহৃত হয়।
- Loop Controller একটি নির্দিষ্ট সংখ্যক বার কাজ পুনরাবৃত্তি করার জন্য ব্যবহৃত হয়।
- Module Controller অন্য টেস্ট প্ল্যান বা স্ক্রিপ্টকে পুনঃব্যবহারযোগ্য মডিউল হিসেবে কাজে লাগাতে সাহায্য করে।
এই কন্ট্রোলারগুলোর সঠিক ব্যবহারে আপনি জেমিটার টেস্ট প্ল্যানের কার্যক্ষমতা বাড়াতে এবং স্ক্রিপ্টটি আরও কার্যকরী ও সুবিধাজনক করতে পারেন।
জেমিটার (JMeter) ওয়েব অ্যাপ্লিকেশন বা সার্ভিসের পারফরম্যান্স টেস্ট করার জন্য শক্তিশালী একটি টুল। এর মধ্যে বিভিন্ন ধরনের Controllers রয়েছে, যেগুলি টেস্ট প্ল্যানের মধ্যে নির্দিষ্ট শর্ত (condition) অনুযায়ী রিকোয়েস্ট প্রেরণ এবং একাধিক রিকোয়েস্টের লজিক্যাল প্রবাহ নিয়ন্ত্রণ করতে ব্যবহৃত হয়। এখানে আমরা If Controller, While Controller, এবং ForEach Controller এর ব্যবহার নিয়ে আলোচনা করব।
1. If Controller
If Controller একটি শর্তসাপেক্ষ (conditional) কম্পোনেন্ট, যা নির্দিষ্ট একটি শর্ত পূর্ণ হলে একটি সাবটাস্ক বা রিকোয়েস্ট চালাতে সহায়তা করে। এই কন্ট্রোলারের মাধ্যমে আপনি শর্তানুযায়ী নির্দিষ্ট কাজ বা রিকোয়েস্ট চালু বা বন্ধ করতে পারেন।
If Controller এর ব্যবহার:
- Condition: একটি শর্ত নির্ধারণ করা হয় যা যদি সত্য হয়, তবে শুধুমাত্র সেই সময় কার্যকর হবে।
- Use Case: যখন কোনো বিশেষ পরিস্থিতি বা ডেটার উপর ভিত্তি করে একটি নির্দিষ্ট রিকোয়েস্ট চালানোর প্রয়োজন হয়।
উদাহরণ:
ধরা যাক, একটি পেজে লগইন করার পর যদি রেসপন্স কোড 200 হয়, তবে পরবর্তী পেজে পণ্যের তথ্য স্ক্র্যাপ করা হবে।
- If Controller ব্যবহার করার জন্য, প্রথমে Thread Group এর মধ্যে Add → Logic Controller → If Controller নির্বাচন করুন।
- Condition:
ResponseCode == 200(যদি সার্ভার 200 OK রেসপন্স দেয়) - Sub Requests: এর মধ্যে আপনি ঐ রিকোয়েস্টগুলো দিতে পারবেন যেগুলি আপনি 200 OK রেসপন্স পেলে চালাতে চান।
${__javaScript(${ResponseCode} == 200,)}
এই শর্তের মাধ্যমে, যদি রেসপন্স কোড 200 হয়, তবে ওই শর্তের অধীনে থাকা অন্যান্য রিকোয়েস্ট বা অপারেশন কার্যকর হবে।
2. While Controller
While Controller ব্যবহার করা হয় একটি শর্তীয় লুপ চালানোর জন্য। এটি সেইসময় পর্যন্ত রিকোয়েস্ট বা সাবটাস্ক চালিয়ে যায়, যতক্ষণ না নির্দিষ্ট শর্ত পূর্ণ হয়। এটি While Loop এর মতো কাজ করে, যেখানে শর্ত সত্য না হওয়া পর্যন্ত লুপ চলতে থাকে।
While Controller এর ব্যবহার:
- Condition: একটি শর্ত যা বারবার পরীক্ষা করা হয় যতক্ষণ না সেটি মিথ্যা না হয়।
- Use Case: যখন কিছু নির্দিষ্ট সংখ্যক বার একটি কাজ সম্পন্ন করতে হবে অথবা একটি নির্দিষ্ট শর্ত পূর্ণ না হওয়া পর্যন্ত কাজ চলতে থাকবে।
উদাহরণ:
ধরা যাক, আপনি একটি ওয়েব পেজের "Load More" বাটন ক্লিক করতে চান যতক্ষণ না সব পেজ লোড না হয়। আপনি এই শর্তে While Controller ব্যবহার করতে পারেন।
- While Controller ব্যবহার করার জন্য, প্রথমে Thread Group এর মধ্যে Add → Logic Controller → While Controller নির্বাচন করুন।
- Condition:
(${PageLoaded} == false)(যতক্ষণ না পেজ সম্পূর্ণ লোড হচ্ছে) - Sub Requests: এর মধ্যে আপনি ঐ রিকোয়েস্টগুলো যোগ করবেন যা লোডিং এর জন্য ব্যবহৃত হবে (যেমন, "Load More" ক্লিক করা)
${__javaScript(${PageLoaded} == false,)}
এতে যতক্ষণ না PageLoaded ভ্যারিয়েবল সত্য (true) হয়ে যায়, ততক্ষণ পর্যন্ত While Controller রিকোয়েস্ট পাঠিয়ে যাবে।
3. ForEach Controller
ForEach Controller এমন একটি কম্পোনেন্ট যা লিস্ট বা অ্যারে ডেটা ব্যবহার করে একটি লুপ তৈরি করে। এই কন্ট্রোলারের মাধ্যমে আপনি বিভিন্ন আইটেম বা ডেটার জন্য একাধিক রিকোয়েস্ট বা সাবটাস্ক চালাতে পারেন।
ForEach Controller এর ব্যবহার:
- Input Variable: একটি লিস্ট বা অ্যারে দেওয়া হয়, যা থেকে এক এক করে আইটেম নিয়ে রিকোয়েস্ট চালানো হয়।
- Use Case: যখন আপনার কাছে একটি ডেটা সেট বা লিস্ট থাকে এবং আপনি প্রতিটি আইটেমের জন্য আলাদা আলাদা রিকোয়েস্ট পাঠাতে চান।
উদাহরণ:
ধরা যাক, আপনি একাধিক ইউজারের জন্য লগইন রিকোয়েস্ট পাঠাতে চান। এই ক্ষেত্রে, আপনি ForEach Controller ব্যবহার করতে পারেন।
- ForEach Controller ব্যবহার করার জন্য, প্রথমে Thread Group এর মধ্যে Add → Logic Controller → ForEach Controller নির্বাচন করুন।
- Input Variable Prefix:
UserList(এটি একটি লিস্ট বা অ্যারে হবে যা ভ্যারিয়েবলের মাধ্যমে প্রদান করা হবে) - Sub Requests: এর মধ্যে আপনি ঐ রিকোয়েস্টগুলো দিবেন যেগুলি ইউজারদের জন্য পাঠানো হবে।
User1,User2,User3,User4
এটি প্রতিটি ইউজারের জন্য একে একে লগইন রিকোয়েস্ট পাঠাবে।
সারাংশ
জেমিটার (JMeter) এর If Controller, While Controller, এবং ForEach Controller অত্যন্ত গুরুত্বপূর্ণ টুল, যা বিভিন্ন ধরনের শর্ত, লুপ এবং ডেটা সেট পরিচালনা করতে সহায়তা করে।
- If Controller ব্যবহার করে শর্ত অনুযায়ী রিকোয়েস্ট চালানো যায়।
- While Controller একটি শর্তীয় লুপ তৈরি করে, যা শর্ত সত্য না হওয়া পর্যন্ত চলতে থাকে।
- ForEach Controller ব্যবহার করে আপনি লিস্ট বা অ্যারে থেকে একাধিক আইটেমের জন্য রিকোয়েস্ট পাঠাতে পারেন।
এই কম্পোনেন্টগুলির সাহায্যে আপনি টেস্ট প্ল্যানের মধ্যে লজিক্যাল ফ্লো কাস্টমাইজ করে টেস্টিং কার্যক্রম আরও দক্ষ ও নির্ভরযোগ্য করতে পারেন।
JMeter একটি শক্তিশালী টুল যা ওয়েব অ্যাপ্লিকেশন এবং সার্ভিসের পারফরম্যান্স টেস্টিংয়ের জন্য ব্যবহৃত হয়। JMeter-এ Logic Controllers বিভিন্ন রকমের কাজ সম্পাদন করতে ব্যবহৃত হয়, যেমন রিকোয়েস্টের স্ট্রাকচার কন্ট্রোল করা, কন্ডিশনাল ফ্লো তৈরি করা, বা সিকোয়েন্স নিয়ন্ত্রণ করা। Logic Controllers এর মাধ্যমে আপনি নির্দিষ্ট শর্তে রিকোয়েস্টগুলি চালনা করতে পারবেন এবং আপনার টেস্টের আচরণ কাস্টমাইজ করতে পারবেন।
এই টিউটোরিয়ালে আমরা দেখব Logic Controller এবং তার বাস্তবায়ন কীভাবে করা যায়, উদাহরণসহ।
Logic Controller কী?
JMeter-এ Logic Controllers মূলত রিকোয়েস্টের চালনা এবং কার্যকারিতা নিয়ন্ত্রণ করে। এগুলি রিকোয়েস্টের সিকোয়েন্স বা লজিক ঠিক করে, যেমন কোন রিকোয়েস্ট কবে চালাতে হবে বা কিভাবে চালানো হবে।
JMeter-এ বিভিন্ন ধরনের Logic Controllers রয়েছে:
- Simple Controller: কোনো নির্দিষ্ট লজিকের প্রয়োজন না হলে এটি ব্যবহার করা হয়।
- Loop Controller: একটি নির্দিষ্ট রিকোয়েস্ট একাধিকবার চালানোর জন্য ব্যবহৃত হয়।
- If Controller: কোনো শর্ত পুরণ হলে রিকোয়েস্ট চালানোর জন্য ব্যবহৃত হয়।
- While Controller: একটি শর্ত যতক্ষণ সঠিক থাকে ততক্ষণ রিকোয়েস্ট চালানোর জন্য ব্যবহৃত হয়।
- Switch Controller: নির্দিষ্ট কন্ডিশন অনুযায়ী রিকোয়েস্ট চালানোর জন্য ব্যবহৃত হয়।
- Transaction Controller: একাধিক রিকোয়েস্টকে একত্রে গ্রুপ করে টেস্টের সময় ট্রানজেকশন পরিমাপ করতে ব্যবহৃত হয়।
Logic Controller এর উদাহরণ
উদাহরণ: Loop Controller ব্যবহার করে একাধিক রিকোয়েস্ট রান করা
Loop Controller ব্যবহার করে আপনি একটি নির্দিষ্ট রিকোয়েস্টকে একাধিকবার চালাতে পারেন। ধরুন, আপনি চান যে একটি HTTP Request 5 বার রান করুক।
ধাপ ১: Loop Controller সেটআপ করা
- Test Plan তৈরি করুন এবং
Thread Groupযোগ করুন। Thread Groupএর অধীনে Loop Controller যোগ করুন:Thread Groupএ ডান ক্লিক করুন এবংAdd>Logic Controller>Loop Controllerনির্বাচন করুন।- Loop Count সেট করুন 5, যাতে রিকোয়েস্টটি 5 বার চালানো হয়।
- HTTP Request যোগ করুন:
Loop Controllerএর অধীনে ডান ক্লিক করুন এবংAdd>Sampler>HTTP Requestনির্বাচন করুন।- এখানে, আপনি যে URL এবং মেথড (GET বা POST) ব্যবহার করতে চান সেটি নির্ধারণ করুন।
এখন, Loop Controller 5 বার ওই HTTP Request চালাবে।
ধাপ ২: ফলাফল বিশ্লেষণ
এখন, আপনি Listener (যেমন View Results Tree বা Summary Report) যোগ করে টেস্টের ফলাফল দেখতে পারবেন।
কোড উদাহরণ
ধরা যাক, আপনি HTTP Request তৈরি করেছেন এবং চান যে এটি Loop Controller এর মাধ্যমে 5 বার রান করুক।
// HTTP Request Example: Request to a sample URL
// URL: http://example.com/api
Request:
GET http://example.com/api
এখানে, Loop Controller 5 বার এই রিকোয়েস্টটি চালাবে এবং প্রতিটি রান-এর ফলাফল আপনি Listener-এ দেখতে পারবেন।
উদাহরণ: If Controller ব্যবহার করে কন্ডিশনাল ফ্লো তৈরি করা
If Controller ব্যবহার করে আপনি একটি নির্দিষ্ট শর্তের উপর ভিত্তি করে রিকোয়েস্ট চালাতে পারেন। উদাহরণস্বরূপ, আপনি চান যে কিছু নির্দিষ্ট প্যারামিটার অনুযায়ী একটি HTTP Request চালানো হোক।
ধাপ ১: If Controller সেটআপ করা
- Thread Group তৈরি করুন।
- If Controller যোগ করুন:
Thread Groupএর অধীনে ডান ক্লিক করুন এবংAdd>Logic Controller>If Controllerনির্বাচন করুন।- Condition সেট করুন, যেমন:
${user_flag}(এটি একটি কাস্টম ভ্যারিয়েবল হতে পারে যা আপনার টেস্টের সময় ডিফাইন করা হয়)।
- HTTP Request যোগ করুন:
If Controllerএর অধীনে ডান ক্লিক করেAdd>Sampler>HTTP Requestনির্বাচন করুন।
এখন, যদি ${user_flag} ভ্যালু true হয়, তাহলে HTTP Request চালানো হবে।
ধাপ ২: ফলাফল বিশ্লেষণ
Listener যোগ করে ফলাফল দেখতে পারেন এবং শর্ত অনুসারে রিকোয়েস্ট চালানোর আচরণ পরীক্ষা করতে পারেন।
কোড উদাহরণ
ধরা যাক, আপনার একটি ভ্যারিয়েবল ${user_flag} রয়েছে এবং আপনি চান যে, এটি true হলে একটি রিকোয়েস্ট চালানো হোক:
Condition: ${user_flag} == true
এখন, user_flag যদি true হয়, তাহলে নির্দিষ্ট HTTP Request চালানো হবে।
Logic Controller এর অন্যান্য ব্যবহার
- Switch Controller: আপনি যদি একাধিক শর্তের মধ্যে থেকে কোনো একটি শর্ত অনুযায়ী রিকোয়েস্ট চালাতে চান, তবে Switch Controller ব্যবহার করতে পারেন।
- While Controller: এটি ব্যবহার করা হয় যখন আপনি চান যে কোনো শর্ত পূর্ণ না হওয়া পর্যন্ত রিকোয়েস্ট চলতে থাকবে। উদাহরণস্বরূপ, একটি নির্দিষ্ট সময় পর্যন্ত বা একটি নির্দিষ্ট প্যারামিটার পরিবর্তন না হওয়া পর্যন্ত রিকোয়েস্ট চালানো।
- Transaction Controller: একাধিক রিকোয়েস্টকে গ্রুপ করে একই ট্রানজেকশনের মধ্যে রাখতে পারবেন এবং ট্রানজেকশনের সময় পরিমাপ করতে পারবেন।
সারাংশ
JMeter-এ Logic Controllers ব্যবহার করে আপনি আপনার টেস্টের লজিক এবং কার্যকারিতা নিয়ন্ত্রণ করতে পারবেন। Loop Controller, If Controller, Switch Controller, এবং অন্যান্য Logic Controllers-এর মাধ্যমে আপনি রিকোয়েস্টের সিকোয়েন্স এবং শর্ত অনুযায়ী টেস্ট কাস্টমাইজ করতে পারেন। এগুলি পারফরম্যান্স টেস্টিং এবং লোড টেস্টিংয়ের জন্য অত্যন্ত কার্যকরী উপাদান।
Read more